//
//  MBProgressHUD+ZXCategory.h
//  YiShangbao
//
//  Created by simon on 17/6/22.
//  Copyright © 2017年 com.Microants. All rights reserved.
//  Version 0.1.3
//  简介:此SDK的优点：\n1）window处理，其它二封的库普遍用keyWindow，其实会有bug，keyWindow有时候会被意外改变，导致无法展示HUD，或者无法移除HUD。\n2）做了loading防止重复加载处理，如果当前正在loading，新加载的loading直接用当前loading的UI，只修改文本。\n3) 支持iOS13 SDK的UIWindowScene；\n4) 配置了：显示loading的宽限时间,0.1s；\n5)支持toast展示时间根据文本长度动态计算。再配置最小显示持续时间1.5s；再限制最大展示时间6s；\n6)支持completionBlock隐藏移除时的block回调；有些业务需要隐藏后再处理其它事件。\n7)支持线程安全，即使子线程调用也会提交到主线程队列执行，不会崩溃。


//  2018.4.12  优化延长时间的bug；
//  2018.08.01 修改获取需要添加toast的window对象，目前debug先用，线上不用
//  2018.8.22  添加‘加载由多张图片组成的动画’的方法
//  2020.03.20 为了兼容iOS13 SDK的UIWindowScene，修改获取windows方法；待验证；
//  2021.01.23 新增completionBlock隐藏移除时的block回调；
//  2021.5.26  code码处理移除；
//  2022.3.21  延迟时间设置最大值6s。
//  2022.04.07 showText的之前，hid的时候移除动画；
//  2023.09.01 设置loading宽限时间0.1s，修改showLoading的方法。
//  2023.09.01 增加支持线程安全，修改api方法

#import <MBProgressHUD/MBProgressHUD.h>

NS_ASSUME_NONNULL_BEGIN

// 注意：
// 当业务遇到“上传”，“正在干什么”等，要在window上提示；
// 当在UITabelViewController，UICollectionViewController，也要在window上提示；

@interface MBProgressHUD (ZXCategory)

#pragma mark - ShowLoading

/// 正在加载，HUD显示在window上
+ (void)zx_showLoading;


/// 正在加载，HUD显示在window上
/// @param text 文本，只支持展示一行
+ (void)zx_showLoadingWithStatus:(nullable NSString *)text;

/// 正在加载
/// @param text 文本，只支持展示一行
/// @param view 添加到的视图，支持window显示和自定义view显示，当view＝nil，默认是window，显示在window上；
+ (void)zx_showLoadingWithStatus:(nullable NSString *)text toView:(nullable UIView *)view;



#pragma mark - ShowSuccess



/// 成功提示，默认添加在window上；会自动隐藏,默认根据文本内容长度设置时间隐藏;
/// @param success 成功提示文本；
+ (void)zx_showSuccess:(nullable NSString *)success;

/**
 成功提示；会自动隐藏,默认根据文本内容长度设置时间隐藏；

 @param success 成功提示文本；
 @param view 所加的view层，当view＝nil，默认是window；
 */
+ (void)zx_showSuccess:(nullable NSString *)success toView:(nullable UIView *)view;

+ (void)zx_showSuccess:(nullable NSString *)success
                toView:(nullable UIView *)view
       completionBlock:(nullable MBProgressHUDCompletionBlock)completionBlock;


+ (void)zx_showSuccess:(nullable NSString *)success
                toView:(nullable UIView *)view
        hideAfterDelay:(NSTimeInterval)delay;


+ (void)zx_showSuccess:(nullable NSString *)success
                toView:(nullable UIView *)view
        hideAfterDelay:(NSTimeInterval)delay
       completionBlock:(nullable MBProgressHUDCompletionBlock)completionBlock;



#pragma mark - ShowError

/// 失败提示，默认添加在window上；会自动隐藏,默认根据文本内容长度设置时间隐藏；
/// @param error 失败提示文本
+ (void)zx_showError:(nullable NSString *)error;

/**
 失败提示；会自动隐藏,默认根据文本内容长度设置时间隐藏；
 
 @param error 失败提示文本；
 @param view 所加的view层，如果传nil，默认window；
 */
+ (void)zx_showError:(nullable NSString *)error toView:(nullable UIView *)view;

+ (void)zx_showError:(nullable NSString *)error
              toView:(nullable UIView *)view
     completionBlock:(nullable MBProgressHUDCompletionBlock)completionBlock;

+ (void)zx_showError:(nullable NSString *)error
              toView:(nullable UIView *)view
      hideAfterDelay:(NSTimeInterval)delay;

+ (void)zx_showError:(nullable NSString *)error
              toView:(nullable UIView *)view
      hideAfterDelay:(NSTimeInterval)delay
     completionBlock:(nullable MBProgressHUDCompletionBlock)completionBlock;


#pragma mark - ShowText基础方法

/// 成功和失败的基础提示方法；会自动隐藏,默认根据文本内容长度设置时间隐藏，带图片属性；
/// @param text 提示文本；
/// @param iconImage 提示图片；
/// @param view 所加的view层，如果传nil，默认window；
/// @param delay 指定延迟多久隐藏
/// @param completionBlock HUD完成移除回调
+ (void)zx_showText:(nullable NSString *)text
         customIcon:(nullable UIImage *)iconImage
               view:(nullable UIView *)view
     hideAfterDelay:(NSTimeInterval)delay
    completionBlock:(nullable MBProgressHUDCompletionBlock)completionBlock;


#pragma mark - hideHUD

/// 移除window上的hud
+ (void)zx_hideHUD;


/// 移除hud
/// @param view HUD所在的指定视图
+ (void)zx_hideHUDForView:(nullable UIView *)view;



/*
//gif图提示:@"litteMoney"
+ (void)zx_showGifWithGifName:(NSString *)gifName toView:(nullable UIView *)view;

//自定义加载动画
+ (void)zx_showGifWithGifName:(NSString *)gifName Text:(nullable NSString *)aText toView:(nullable UIView *)view;

//自定义加载动画 显示时间
+ (void)zx_showGifWithGifName:(NSString *)gifName Text:(nullable NSString *)aText time:(CGFloat)time toView:(nullable UIView *)view;



// 加载由多张图片组成的动画
//
// @param gifName 图片命名方式
// @param imgCount 图片张数
// @param view 所加的view层，如果传nil，默认window；
//
// eg： [MBProgressHUD jl_showGifWithGifName:@"load" imagesCount:13 toView:self.view];
// 即加载@"load1.png" @"load2.png" ....@"load13.png" 组成的gif动画。 动画默认每帧0.05s

+ (void)jl_showGifWithGifName:(NSString *)gifName imagesCount:(NSInteger )imgCount toView:(nullable UIView *)view;
*/

@end


NS_ASSUME_NONNULL_END
